从反射到规划
在智能体设计的演进中,我们从 反射智能体开始,这类智能体根据简单的规则直接将感知映射为动作(例如,"前方车辆刹车,则开始制动"),进而过渡到 问题求解智能体。反射智能体仅基于即时情境做出反应,而问题求解智能体则是 基于目标的。它们会考虑自身行为的未来后果,以找到满足特定目标的行为序列。
- 反射智能体: $Action = Function(Percept)$
- 规划智能体: $Action\_Sequence = Search(State, Goal)$
原子状态表示
在这个基础层面上,智能体采用 原子表示。这意味着世界的状态被视为一个黑盒——一个对搜索算法而言内部结构不可见的单一节点。智能体仅对以下内容进行推理:
- 状态($S$): 环境的快照。
- 动作($A$): 状态之间的转移。
- 目标测试: 检查状态 $s \in S_{goal}$ 的布尔判断。
问题求解循环
问题求解智能体遵循一个明确的四步循环来探索环境:
- 目标制定: 根据当前情境决定要追求哪个目标。
- 问题建模: 将现实世界抽象为数学模型(状态与动作)。
- 搜索: 模拟动作序列以找到 最优路径。
- 执行: 执行搜索阶段找到的动作,无需进一步思考(假设环境是静态的)。
Python 实现(agent_types.py)
1
class ReflexAgent:
2
defact(self, percept):
3
# Direct mapping: Rule -> Action
4
return rules.get(percept, default_action)
5
6
class ProblemSolvingAgent:
7
def__init__(self):
8
self.seq = [] # Buffered action sequence
9
10
defact(self, percept):
11
# If we are mid-execution, continue
12
ifself.seq:
13
returnself.seq.pop(0)
14
15
# Otherwise, Plan (Search)
16
state = self.update_state(percept)
17
goal = self.formulate_goal(state)
18
problem = self.formulate_problem(state, goal)
19
20
# Search returns a list of actions
21
self.seq = search_algorithm(problem)
22
23
returnself.seq.pop(0)